"""
序列：内容连续有序，可使用洗标索引的一类数据容器（比如列表，元组，字符串）
- 切片：从一个序列中，去除一个子序列
- 语法：序列[其实下标:结束下标:步长]，表示从序列中，从指定位置开始，依次去除元素，到指定位置结束，得到一个新序列
      步长为负数，序列从后往前（反转）
"""

# 对list进行切片，从1开始，4结束，步长1
my_list = [0,1,2,3,4,5,6,7,8,9,10]
result = my_list[1:4]  # 步长默认是1，可以省略不写
print(f"结果1是：{result}")

# 对tuple进行切片，从头开始，到最后结束，步长1
my_tuple = (0,1,2,3,4)
result2 = my_tuple[:]  # 起始下标可以留空，结尾下标也可以留空，步长可以默认是1
print(f"结果2：{result2}")

# 对str进行切片，从头开始，到最后结束，步长2
my_str = "my name is Lily"
result3 = my_str[::2]
print(f"结果3是：{result3}")

# 对str进行切片，从头开始，到最后结束，步长-1
my_str = "my name is Lily"
result4 = my_str[::-1]  # 等同于将序列反转了
print(f"结果是：{result4}")

# 对列表进行切片，从3开始，到1结束，步长-1
my_list = [0,1,2,3,4,5,6,7,8,9,10]
result5 = my_list[3:1:-1]
print(f"结果是：{result5}")

# 对元组进行切片，从头开始，到最后结束，步长-2
my_tuple = (0,1,2,3,4)
result6 = my_tuple[::-2]
print(f"结果是：{result6}")

# 练习：序列的切片实践
my_str = "万过薪月，员序程马黑来，nohyp学"
# new_my_str = my_str[9:4:-1]
# print(new_my_str)
new_list = my_str.split("，")
new_str = new_list[1].strip("来")
new_my_str = new_str[::-1]
print(new_my_str)




